package com.tedu.dao.repository;

import com.tedu.Common.vo.PageData;
import com.tedu.pojo.entity.User;
import com.tedu.pojo.vo.UserListItemVO;
import com.tedu.pojo.vo.UserStandardVO;

/**
 * 处理用户数据的存储库接口
 *
 */
public interface IUserRepository {
    /**
     * 插入用户数据
     *
     */
    int insert(User user);

    /**
     * 根据用户ID删除用户数据
     *
     */
    int deleteById(Long id);

    /**
     * 根据用户ID修改用户的数据
     *
     */
    int updateById(User user);

    /**
     * 根据用户名统计用户数据的数量
     *
     */
    int countByUsername(String username);

    /**
     * 根据手机号码统计用户数据的数量
     *
     */
    int countByPhone(String phone);

    /**
     * 统计匹配手机号码但非用户ID的用户数据的数量，通常用于检查手机号码是否被其他用户占用
     *
     */
    int countByPhoneAndNotId(String phone, Long userId);

    /**
     * 根据电子邮箱统计用户数据的数量
     *

     */
    int countByEmail(String email);

    /**
     * 统计匹配电子邮箱但非用户ID的用户数据的数量，通常用于检查电子邮箱是否被其他用户占用
     *
     */
    int countByEmailAndNotId(String email, Long userId);

    /**
     * 根据用户ID查询用户数据详情
     *
     */
    UserStandardVO getStandardById(Long id);

    /**
     * 查询用户数据列表
     *
     */
    PageData<UserListItemVO> list(Integer pageNum, Integer pageSize);


}
